package com.guowen.myaccount.frag_statistics;

import android.graphics.Color;

import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.data.PieEntry;
import com.guowen.myaccount.StatisticsActivity;
import com.guowen.myaccount.adapter.AccountAdapter;
import com.guowen.myaccount.db.AccountBean;
import com.guowen.myaccount.db.DBManager;

import java.util.ArrayList;

public class InStatisticsFragment extends BaseStatisticsFragment{

    @Override
    public void initData() {
        if (StatisticsActivity.TIME == 0)
            mDatas = DBManager.getAccountListOneMonthFromAccounttbByKind(StatisticsActivity.YEAR, StatisticsActivity.MONTH,1);
        else mDatas = DBManager.getAccountListOneYearFromAccounttbByKind(StatisticsActivity.YEAR,1);
        adapter = new AccountAdapter(getContext(),mDatas);
        adapter.notifyDataSetChanged();
        accountLv.setAdapter(adapter);

        pieList = new ArrayList<>();
        typeList = new ArrayList<>();
        moneyList = new ArrayList<>();

        for (int i = 0; i < mDatas.size(); i++){
            AccountBean bean = mDatas.get(i);
            String typename = bean.getTypename();
            if (!typeList.contains(typename)){
                typeList.add(typename);
                moneyList.add(bean.getMoney());
            }else {
                for (int j = 0; j < typeList.size(); j++){
                    if (typename.equals(typeList.get(j))){
                        moneyList.set(j, moneyList.get(j)+ bean.getMoney());
                        break;
                    }
                }
            }
        }

        initPieChart();

    }

    private void initPieChart() {
        //设置各个数据的颜色
        for (int i = 0; i < typeList.size(); i++){
            pieList.add(new PieEntry(moneyList.get(i),typeList.get(i)));
        }


        PieDataSet pieDataSet=new PieDataSet(pieList,"收入情况");
        PieData pieData=new PieData(pieDataSet);
        pie.setData(pieData);
        pieDataSet.setColors(Color.RED,Color.BLUE,Color.GREEN,Color.YELLOW,Color.CYAN);

        //设置中心部分的字  （一般中间白色圆不隐藏的情况下才设置）
        pie.setCenterText("收入\n"+DBManager.getSumMoneyOneMonth(StatisticsActivity.YEAR, StatisticsActivity.MONTH, 1));
        //设置中心字的字体颜色
        pie.setCenterTextColor(Color.BLACK);
        //设置中心字的字体大小
        pie.setCenterTextSize(18);
        //设置描述的字体大小
        pie.setEntryLabelTextSize(15);
        pie.setEntryLabelColor(Color.BLACK);
        //设置数据的字体大小
        pieDataSet.setValueTextSize(12);
        pieDataSet.setValueTextColor(Color.GRAY);
        //设置描述的位置
        pieDataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
//        pieDataSet.setValueLinePart1Length(0.1f);//设置描述连接线长度
        //设置数据的位置
        pieDataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
//        pieDataSet.setValueLinePart2Length(0.1f);//设置数据连接线长度
//        设置两根连接线的颜色
        pieDataSet.setValueLineColor(Color.BLACK);

        //对于右下角一串字母的操作
        pie.getDescription().setEnabled(false);                  //是否显示右下角描述

        //数据更新
        pie.notifyDataSetChanged();
        pie.invalidate();

        //动画（如果使用了动画可以则省去更新数据的那一步）
        pie.animateY(1000); //在Y轴的动画  参数是动画执行时间 毫秒为单位
//        pie.animateX(2000); //X轴动画
//        pie.animateXY(2000,2000);//XY两轴混合动画
    }
}
